#ifndef CITY_H
#define CITY_H

/*
 * 城市类，包括城市经纬度、名字等信息，并定义了距离度量、距离计算函数等。
 */

#include <QString>
#include <QPointF>

class City
{
public:
    City(QString name, float lon, float lan) : City(name,QPointF(lon,lan)){}
    City(QString name, QPointF lonLan);
    City(QStringList info);

    static QPointF lonLanToCoor(QPointF lon_lan);   // 经纬度转换为地图坐标

    enum DistanceMode   // 距离度量
    {
        Euclidean,
        Manhattan,
    };
    static DistanceMode disMode;

    QPointF lon_lan;    // 经纬度
    QPointF coor;   // 在地图中的坐标

    float x()const { return coor.x(); }
    float y()const { return coor.y(); }
    float lon()const { return lon_lan.x(); }
    float lan()const { return lon_lan.y(); }
    QString name()const { return m_name; }

private:
    QString m_name; // 名字

public:
    friend float operator-(City, City);
};
float operator-(City c1, City c2); // 用减号计算两城市间的距离

#endif // CITY_H
